/**
 * Description: 约定大于配置，在该项目中所有的路由配置都应该是自动化完成 在取得路由index.ts 上级的的同级目录下的所有文件index.vue和index-route.js 都是固定格式，
 * 当然在不同的企业/单位/公司 所约定的也不一样 ，所以在开发的时候必须 要约定好路由的格式，才能在写代码的时候不会出现问题
 * Author: sqwen
 * Returns: — router
 */
import {createRouter, createWebHistory} from 'vue-router'
/**
 *     Description: 工程化 读取编译时的文件对象与路径，工程化不明白可以上网查
 *     Author: sqwen
 *     Returns: — pages
 */

const pages = import.meta.glob('../pages/**/index-route.ts',{
    eager:true,
    import:'default'
});
/**
 * Description: 工程化 读取编译时的文件对象与路径，工程化不明白可以上网查
 * Author: sqwen
 * Returns: — comps
 */
const comps = import.meta.glob('../pages/**/index.vue');

/**
 *  Description: 工程化 读取编译时的文件对象与路径，工程化不明白可以上网查
 *  Author: sqwen
 *  Returns: — routes
 *
 */

const routes = Object.entries(pages).map(([path,meta]) =>{
    const  compPath:string = path.replace('index-route.ts','index.vue')
    path = path.replace('../pages','').replace('/index-route.ts','')|| '/'
    if(path === '/index'){
        path = '/'
    }
    const name = path.split('/').filter(Boolean).join('-')|| 'index'
    return {
        path,
        name,
        component: comps[compPath],
        meta,
    }
});
console.info("auto create  router :{",routes,"}")
const router = createRouter({
    history:createWebHistory(),
    routes,
    strict: true
});
router.beforeEach( (to,from ,next) => {
      console.info("test value is  ",to,"bb",from,"cc",next)
      console.info("to value is ",to.meta.requiredAuth)
      const isAuthenticated:boolean = true
      console.info(to.matched.some(record => record.meta.requiresAuth))
    if (to.meta.requiredAuth===true && !isAuthenticated) {
        console.info("进来了喔")
        next('/user'); // 如果需要登录，重定向到登录页面
    } else {
        console.info("出去了喔")
        next(); // 继续
    }
})

export {router}
